<?php
/**
 * Created by PhpStorm.
 * User: 杨胜飞
 * Date: 2017\8\26 0026
 * Time: 14:44
 */

namespace app\common\model;


use think\Db;
use think\Model;

/**
 * Class Engineers
 * @package app\common\model
 *         工程人员表  模型
 */
class Engineers extends Model
{

    /**
     * @param $data  ->  数组   ['key' => 'value']
     * @return bool|false|int
     *      添加 工程人员表 数据
     */
    public function add($data)
    {
        // 添加一条数据 过滤表中不存在的字段
        $this->data($data);
        $result = $this->allowField(true)->save();
        // 判断结果 并返回
        if ($result !== 1) {
            return false;
        }
        return $result;
    }

    /**
     * @param $id
     * @return $this|bool
     *     根据主键ID 完成一次逻辑删除
     */
    public function remove($id)
    {
        // 根据主键ID 完成一次逻辑删除
        $result = $this->where('engineers_id',$id)->update(['is_delete' => 1]);
        // 判断结果 并返回
        if ($result !== 1) {
            return false;
        }
        return $result;
    }

    /**
     * @param $where ->  条件  ['key' => 'value']
     * @param $data  ->  数据  ['key' => 'value', 'key' => 'value']
     * @return $this|bool
     *       根据条件 $where 修改数据  注意传参顺序
     */
    public function edit($where,$data)
    {
        // 根据条件修改单条数据
        $result = $this->where($where)->update($data);
        // 判断结果 并返回数据
        if ($result == false) {
            return false;
        }
        return $result;
    }

    /**
     * @param $where  ->  数组  ['key' => 'value']
     * @return bool|false|\PDOStatement|string|\think\Collection
     *      根据条件 $where  获取单条数据
     */
    public function getOne($where)
    {
        // 根据条件 $where 获取单条数据
        $userInfo = $this->where($where)->cache(true)->find();
        // 判断结果并返回
        if ($userInfo == false) {
            return false;
        }
        return $userInfo;
    }

    /**
     * @return bool|false|\PDOStatement|string|\think\Collection
     *     获取 工程人员表  所有数据
     */
    public function getList()
    {
        // 获取 工程人员表 所有 未被逻辑删除的 数据
        $userInfo = $this->where(['is_delete' => 0])->cache(true)->select();
        // 判断结果 并返回
        if ($userInfo == false) {
            return false;
        }
        return $userInfo;
    }

    /**
     * @param $nowPage
     * @param $limits
     * @return false|\PDOStatement|string|\think\Collection
     *                获取所有工程人员 的数据
     */
    public function getAll($where, $filed = '', $nowPage, $limits)
    {
        // 获取工程人员所有的数据
        $userInfo = $this
                         ->field($filed)
                         ->where($where)
                         ->page($nowPage,$limits)
                         ->select();
        // 返回结果
        return $userInfo;


    }

    /**
     * @param $searchObj
     * @return int|string
     *      查询所有 工程人员 数据的总数
     */
    public function getCount($where)
    {

        // 获取工程人员所有的数量
        $count = $this->where($where)
                      ->count();

        // 返回结果
        return $count;

    }

    /**
     * @param $id
     * @return false|\PDOStatement|string|\think\Collection
     *         获取 工程人员 详情信息
     */
    public function getDetail($field, $where, $dbName, $join)
    {
           $data =  Db::table($dbName)               // 工程人员表
                        ->alias('a')           // 主表别名
                        ->join($join)                // 需要关联的表
                        ->field($field)              // 需要查询的字段
                        ->where($where)              // 条件
                        ->find();

           // 返回结果
           return $data;

    }

    /*
	 *  统计用户数量
	 *  @author ligang
	 *  @param  $where      条件
	 *  @param  $whereTime  时间条件['字段'=>'规则']
	 *  @return int
	 */
    public function CountEngineersNumber($where,$whereTime,$join=[])
    {
        $db = Db::name('engineers');
        if (empty($join)){
            if (empty($whereTime)){
                $result = $db->where($where)->count();
            }else{
                if (!is_array($whereTime)){
                    return "时间必须是数组,以键值对形式";
                }
                $whereTimeKey = array_keys($whereTime);
                $result = $db->where($where)->whereTime($whereTimeKey[0],$whereTime[$whereTimeKey[0]])->count();
            }
        }else{
            if (empty($whereTime)){
                $result = $db->where($where)->join($join)->count();
            }else{
                if (!is_array($whereTime)){
                    return "时间必须是数组,以键值对形式";
                }
                $whereTimeKey = array_keys($whereTime);
                $result = $db->join($join)->where($where)->whereTime($whereTimeKey[0],$whereTime[$whereTimeKey[0]])->count();
            }
        }
        return $result;
    }

    /*
     * 获取一条工程人员信息
     * @author  ligang
     * @param   array $where    条件
     * @param   string  $field  字段
     */
    public function getEngineerInfo($where,$field='*')
    {
        $result = Db::name('engineers')->where($where)->field($field)->find();
        return $result;
    }

}